package com.yixia.common.core.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yixia.common.core.domain.BaseEntity;
import lombok.Data;

import java.util.Set;

/**
 * @TableName sys_role
 */
@TableName(value = "sys_role")
@Data
public class SysRole extends BaseEntity {
    /**
     * 角色主键ID
     */
    @TableId(value = "role_id", type = IdType.AUTO)
    private Long roleId;

    /**
     * 角色名称
     */
    @TableField(value = "role_name")
    private String roleName;


    /**
     * 角色权限
     */
    @TableField(value = "role_key")
    private String roleKey;

    /**
     * 显示顺序
     */
    @TableField(value = "role_sort")
    private Integer roleSort;

    /**
     * 数据范围（1：所有数据权限；2：自定义数据权限；3：本部门数据权限；4：本部门及以下数据权限；5：仅本人数据权限）
     */
    @TableField(value = "data_scope")
    private String dataScope;


    /**
     * 菜单树选择项是否关联显示
     */
    @TableField(value = "menu_check_strictly")
    private boolean menuCheckStrictly;

    /**
     * 部门树选择项是否关联显示
     */
    @TableField(value = "dept_check_strictly")
    private boolean deptCheckStrictly;


    /**
     * 删除标志（0代表存在 2代表删除）
     */
    @TableField(value = "del_flag")
    private String delFlag;


    /** 用户是否存在此角色标识 默认不存在 */
    @TableField(exist = false)
    private boolean flag = false;


    /*
    *当前状态
    * */
    @TableField(value = "status")
    private String status;


    /**
     * 角色菜单权限
     */
    @TableField(exist = false)
    private Set<String> permissions;


    /** 菜单组 */
    @TableField(exist = false)
    private Long[] menuIds;

    /**
     *  部门组（数据权限）
     *  */
    @TableField(exist = false)
    private Long[] deptIds;



    @TableField(exist = false)
    private static final long serialVersionUID = 1L;


    public Long getRoleId() {
        return this.roleId;
    }

    public boolean isAdmin() {
        return isAdmin(this.roleId);
    }


    public static boolean isAdmin(Long roleId)
    {
        return roleId != null && 1L == roleId;
    }

}